<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                template="./../../resources/templates/baseTemplate.xhtml">

    <ui:define name="content">
        <f:view id="vRoot">
            <p:fieldset legend="Gerenciar tipo de público">
                <h:form id="frmTiposPublico">
                    <!-- Exibição de mensagens gerais -->
                    <p:growl  id="gMessages" globalOnly="true" sticky="false"/>

                    <!-- Exibição da lista de tipos de públicos -->
                    <p:dataTable id="dtTiposPublico"
                                 value="#{tipoPublicoBean.lstDataTableTipoPublico}"
                                 paginator="true" rows="5" 
                                 rowsPerPageTemplate="5,10"
                                 paginatorPosition="bottom"
                                 paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 var="atual">

                        <f:facet name="header">
                            <p:commandButton id="cbViewNovo" value="Novo" type="button" styleClass="cbViewNovo" onclick="dlgNovo.show();" />
                        </f:facet>

                        <!-- Colunas de edição e exclusão -->
                        <p:column>
                            <f:facet name="header">
                                <h:outputLabel value="Editar"/>
                            </f:facet>
                            <p:commandButton id="cbViewEditar"  
                                             image="ui-icon-pencil" 
                                             title="Editar"
                                             update=":frmEditar:pEditarTipoPublico"
                                             oncomplete="dlgEditar.show();">
                                <f:setPropertyActionListener value="#{atual}" target="#{tipoPublicoBean.tipoPublicoSelecionado}" />
                            </p:commandButton>
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                <h:outputLabel value="Excluir"/>
                            </f:facet>
                            <p:commandButton id="cbViewExcluir" onclick="dlgExcluir.show();" 
                                             icon="ui-icon-close" title="Excluir">
                                <f:setPropertyActionListener value="#{atual}" 
                                                             target="#{tipoPublicoBean.tipoPublicoSelecionado}" />
                            </p:commandButton> 
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                Nome
                            </f:facet>
                            <h:outputLabel id="olViewTipoPublicoNome" value="#{atual.nmeTipoPublico}"/>
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                Descrição
                            </f:facet>
                            <h:outputLabel id="olViewTipoPublicoDesc" value="#{atual.dscTipoPublico}"/>
                        </p:column>
                    </p:dataTable>

                </h:form>

                <!-- Caixa de diálogo de inclusão -->
                <p:dialog id="dlgNovoTipoPublico" widgetVar="dlgNovo" modal="true" header="Novo tipo de público"
                          resizable="false">
                    <h:form id="frmNovo">
                        <p:panel id="pNovoTipoPublico">
                            <p:messages id="mNovoMessages" redisplay="false" />
                            <p:panelGrid columns="2">
                                <p:outputLabel id="olNovoNomeTipoPublico" value="Nome:" for="itNovoNomeTipoPublico"/>
                                <p:inputText id="itNovoNomeTipoPublico" value="#{tipoPublicoBean.nome}" required="true"
                                             requiredMessage="Digite o nome do tipo público."/>

                                <p:outputLabel id="olNovoDescricaoTipoPublico" for="itNovoDescricaoTipoPublico" value="Descrição:"/>
                                <p:inputTextarea rows="6" cols="33" id="itNovoDescricaoTipoPublico" value="#{tipoPublicoBean.descricao}" required="true"
                                             requiredMessage="Digite o nome do tipo de público."/>
                                <p:commandButton value="Cancelar" immediate="true" onclick="dlgNovo.hide()"/>
                                <p:commandButton id="cbNovoSalvar" value="Salvar" 
                                                 actionListener="#{tipoPublicoBean.cadastrarTipoPublico}"
                                                 oncomplete="handleSalvo(xhr, status, args);" 
                                                 update=":frmTiposPublico :frmNovo"
                                                 ajax="true"/>
                            </p:panelGrid>
                        </p:panel>
                    </h:form>
                </p:dialog>

                <!-- Caixa de diálogo de exclusão -->
                <p:confirmDialog id="dialogoExcluir" message="Deseja realmente excluir?"
                                 header="Excluir tipo de público" severity="alert" 
                                 widgetVar="dlgExcluir">
                    <h:form id="frmExcluir">
                        <p:commandButton id="cbExcluirCancelar" value="Cancelar" onclick="dlgExcluir.hide()" type="button" /> 
                        <p:commandButton id="cbExcluirContinuar" value="Continuar"
                                         update=":frmTiposPublico" 
                                         oncomplete="dlgExcluir.hide()"
                                         actionListener="#{tipoPublicoBean.excluirTipoPublico}"/>
                    </h:form>
                </p:confirmDialog>
                <!-- Caixa de diálogo de edição -->
                <p:dialog id="dialogoEditar" widgetVar="dlgEditar" header="Editar tipo de público"
                          resizable="false" modal="true">
                    <h:form id="frmEditar">
                        <p:panel id="pEditarTipoPublico">
                            <p:messages id="mEditarMessages" redisplay="false" />
                            <p:panelGrid columns="2">
                                <p:outputLabel id="olEditarNomeTipoPublico" value="Nome:" for="itEditarNomeTipoPublico"/>
                                <p:inputText id="itEditarNomeTipoPublico" value="#{tipoPublicoBean.tipoPublicoSelecionado.nmeTipoPublico}" required="true"
                                             requiredMessage="Digite o nome do tipo de público."/>

                                <p:outputLabel id="olEditarDescricaoTipoPublico" for="itEditarDescricaoTipoPublico" value="Tipo de público:"/>
                                <p:inputTextarea rows="6" cols="33" id="itEditarDescricaoTipoPublico" value="#{tipoPublicoBean.tipoPublicoSelecionado.dscTipoPublico}" required="true"
                                             requiredMessage="Digite a descrição do tipo de público."/>
                                <p:commandButton value="Cancelar" immediate="true" onclick="dlgEditar.hide()"/>
                                <p:commandButton id="cbEditarSalvar" value="Salvar" 
                                                 actionListener="#{tipoPublicoBean.alterarTipoPublico}"
                                                 oncomplete="dlgEditar.hide();" 
                                                 update=":frmTiposPublico :frmEditar"/>
                            </p:panelGrid>
                        </p:panel>
                    </h:form>
                </p:dialog>
            </p:fieldset>
            <script type="text/javascript">
                function handleSalvo(xhr, status, args){
                    if(args.tipoPublicoSalvo){
                        dlgNovo.hide();
                    }
                }
            </script>
        </f:view>
    </ui:define>

</ui:composition>
